﻿Imports WSEntidades
Imports Utilerias
Imports WSDatos
Public Class CompLeyendasFiscBL
    Public Function RegistrarLeyenda(ByVal TokenConexion As String, ByVal Leyenda As CompLeyendasFiscBE, ByRef detResp As DetalleRespuesta) As Boolean
        Dim LeyendaDAL As CompLeyendasFiscDAL = New CompLeyendasFiscDAL("")
        detResp.Mensajes = ""
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoPara(Enumeraciones.operacionesCatalogos.Registrar, Leyenda, detResp.Mensajes)) Then
                LeyendaDAL = New CompLeyendasFiscDAL(TokenConexion)
                If (LeyendaDAL.registraLeyenda(Leyenda)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "La leyenda se registro con éxito.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueRegistrado,
                                             "La Leyenda no pudo ser registrada en el sistema." & vbCrLf & detResp.Mensajes)
                    Return False
                End If

                'If (LeyendaDAL.existeLeyenda(Leyenda.Id)) Then
                '    codigoResp = 361
                '    mensajes &= "Existe un registro con el mismo Id de la Leyenda." & vbCrLf
                '    Return False
                'Else
                'End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La Leyenda no es valida para registrar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "CompLeyendasFiscBL.RegistrarLeyenda")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al registrar la Leyenda Fiscal: " & ex.Message)
            Return False
        Finally
            LeyendaDAL = Nothing
        End Try
    End Function

    Private Function EsValidoPara(ByVal operacion As Enumeraciones.operacionesCatalogos, ByRef Leyenda As CompLeyendasFiscBE, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            Select Case operacion
                Case Enumeraciones.operacionesCatalogos.Registrar
                    If (Leyenda.Id <> 0) Then
                        mensaje &= "El Id de la Leyenda debe ser 0 para la operación de Registrar." & vbCrLf
                    End If

                Case Enumeraciones.operacionesCatalogos.Actualizar
                    If (Leyenda.Id <= 0) Then
                        mensaje &= "Verifique el Id de la Leyenda a actualizar, debe ser mayor a 0." & vbCrLf
                    End If
            End Select

            If Not (String.IsNullOrWhiteSpace(Leyenda.DispFiscal)) Then
                Leyenda.DispFiscal = Leyenda.DispFiscal.ToUpper.Trim
                If (Leyenda.DispFiscal.Length > 255) Then
                    Leyenda.DispFiscal = Leyenda.DispFiscal.Substring(0, 255)
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(Leyenda.Norma)) Then
                Leyenda.Norma = Leyenda.Norma.Trim
                If (Leyenda.Norma.Length > 255) Then
                    Leyenda.Norma = Leyenda.Norma.Substring(0, 255)
                End If
            End If

            If (String.IsNullOrWhiteSpace(Leyenda.Leyenda)) Then
                mensaje &= "El Campo Leyenda no puede ir vacio." & vbCrLf
            Else
                Leyenda.Leyenda = Leyenda.Leyenda.Trim
                If (Leyenda.Leyenda.Length > 1000) Then
                    Leyenda.Leyenda = Leyenda.Leyenda.Substring(0, 1000)
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "CompLeyendasFiscBL.EsValidoParaRegistrar")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function ActualizaLeyenda(ByVal TokenConexion As String, ByVal Leyenda As CompLeyendasFiscBE, ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim LeyendaDAL As CompLeyendasFiscDAL = New CompLeyendasFiscDAL("")
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoPara(Enumeraciones.operacionesCatalogos.Actualizar, Leyenda, detResp.Mensajes)) Then
                LeyendaDAL = New CompLeyendasFiscDAL(TokenConexion)
                If (LeyendaDAL.actualizaLeyenda(Leyenda)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "Datos de la Leyenda actualizados.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización de Datos de la Leyenda." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "CompLeyendasFiscBL.ActualizaLeyenda")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al actualizar Leyenda: " & ex.Message)
            Return False
        Finally
            LeyendaDAL = Nothing
        End Try
    End Function

    Public Function GetLeyenda(ByVal tokenConexion As String, ByVal Id As Integer, ByRef detResp As DetalleRespuesta) As CompLeyendasFiscBE
        detResp.Mensajes = ""
        Dim LeyendaDAL As CompLeyendasFiscDAL = New CompLeyendasFiscDAL("")
        Dim LeyendaBE As CompLeyendasFiscBE
        Try
            tokenConexion = RijndaelSimple.desencriptaDefault(tokenConexion)
            If (EsValidoParaGetLeyenda(Id, detResp.Mensajes)) Then
                LeyendaDAL = New CompLeyendasFiscDAL(tokenConexion)
                LeyendaBE = LeyendaDAL.getLeyenda(Id)
                If (LeyendaBE IsNot Nothing) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "Se obtuvo la información de la Leyenda con éxito.")
                    Return LeyendaBE
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_RegistroInexistenteOInactivo,
                                             "No se obtuvo la información de la Leyenda" & vbCrLf & detResp.Mensajes)
                    Return Nothing
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "El Id de la Leyenda proporcionado no existe: " & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "CompLeyendasFiscBL.GetLeyenda")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al obtener información de la Leyenda: " & ex.Message)
            Return Nothing
        Finally
            LeyendaDAL = Nothing
            LeyendaBE = Nothing
        End Try
    End Function

    Private Function EsValidoParaGetLeyenda(ByRef Id As Integer, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (String.IsNullOrEmpty(Id)) Then
                mensaje &= "El campo ID de la Leyenda  no puede ir vacio." & vbCrLf
            Else
                If (Id <= 0) Then
                    mensaje &= "El Id de la Leyenda debe ser mayor a 0" & vbCrLf
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "CompLeyendasFiscBL.EsValidoParaGetLeyenda")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function GetListadoLeyendas(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As List(Of CompLeyendasFiscBE)
        detResp.Mensajes = ""
        Dim LeyendaDAL As CompLeyendasFiscDAL = New CompLeyendasFiscDAL("")
        Dim LLeyendaBE As List(Of CompLeyendasFiscBE)
        Try
            tokenConexion = RijndaelSimple.desencriptaDefault(tokenConexion)
            LeyendaDAL = New CompLeyendasFiscDAL(tokenConexion)
            LLeyendaBE = LeyendaDAL.getListadoLeyendas()
            If (LLeyendaBE IsNot Nothing) Then
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "Se obtuvo el listado de Leyendas con éxito.")
                Return LLeyendaBE
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueRegistrado,
                                         "No se obtuvo el listado de Leyendas" & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "CompLeyendasFiscBL.GetListadoLeyendas")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al obtener el listado de Leyendas: " & ex.Message)
            Return Nothing
        Finally
            LeyendaDAL = Nothing
            LLeyendaBE = Nothing
        End Try
    End Function

End Class
